package com.qzsoft.system.modules.sys.noticeTemplate.common;

import cn.hutool.core.map.MapUtil;
import freemarker.template.Template;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;

import java.io.StringReader;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

/**
 * @author
 */
public class TemplateUtils {
    /**
     * 使用freemarker替换模板中的占位符 ${}
     *
     * @param content 模板内容
     * @param params  参数
     * @return Freemarker渲染后的内容
     */
    public static String replace(String content, Map<String, String> params) throws Exception {
        if (StringUtils.isBlank(content)) {
            return null;
        }
        if (MapUtil.isEmpty(params)) {
            return content;
        }
        //模板
        StringReader reader = new StringReader(content);
        Template template = new Template("notice", reader, null, "utf-8");

        //渲染模板
        StringWriter sw = new StringWriter();
        template.process(params, sw);

        content = sw.toString();
        IOUtils.closeQuietly(sw);

        return content;
    }

    public static void main(String[] args) throws Exception {
        //变量参考freemarker语法
        String template = "${姓名},请于${时间}点，到${会议室}开会。";
        Map m = new HashMap();
        m.put("姓名", "张三");
        m.put("时间", "2020-8-11 17:00");
        m.put("会议室", "301会议室");
        System.out.println(replace(template, m));
        // 张三,请于2020-8-11 17:00点，到301会议室开会。
    }
}